class MyGroovy1 {}

// before 是 metaclass 没修改前就创建的对象, 所以没有新的动态特性
def before = new MyGroovy1()

// 修改 metaclass, 增加动态属性和方法(其实也是属性, 不过这个属性是闭包)
MyGroovy1.metaClass.myProp = "MyGroovy prop"
MyGroovy1.metaClass.test = {-> myProp}

try {
	before.test()
	assert false, "不会执行"
} catch(e) {
	/* handle error */
}

// 新创建的对象可以执行
assert 'MyGroovy prop' == new MyGroovy1().test()
